﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Data;
//using NLite.Data.SqlTypes;

//namespace NLite.Data
//{
//    public partial class SqlBooleanParameter : SqlBooleanBase, IParameterNode
//    {
//        public SqlBooleanParameter(string name, bool? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlBooleanParameter(string name, bool? value) : this(name, value, ParameterDirection.Input) { }
//        public SqlBooleanParameter(bool? value) : this("p", value, ParameterDirection.Input) { }
//        public SqlBooleanParameter(NameIdentity name, bool? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }
       
//        public override object Clone()
//        {
//            return this;
//        }

//    }

//    public partial class SqlByteParameter : SqlByteBase, IParameterNode
//    {
//        public SqlByteParameter(string name, byte? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlByteParameter(string name, byte? value):this(name,value, ParameterDirection.Input)
//        {
//        }
//        public SqlByteParameter(byte? value) : this("p", value) { }
//        public SqlByteParameter(NameIdentity name, byte? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }

//        public override object Clone()
//        {
//            return this;
//        }
//    }

//    public partial class SqlInt16Parameter : SqlInt16Base, IParameterNode
//    {
//        public SqlInt16Parameter(string name, Int16? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlInt16Parameter(string name, Int16? value)
//            : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlInt16Parameter(NameIdentity name, Int16? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }

//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }

//        public override object Clone()
//        {
//            return this;
//        }
//    }
//    public partial class SqlInt32Parameter : SqlInt32Base, IParameterNode
//    {
//        public SqlInt32Parameter(Int32? value) : this("p", value) { }
//         public SqlInt32Parameter(string name, Int32? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//         public SqlInt32Parameter(string name, Int32? value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//         public SqlInt32Parameter(NameIdentity name, Int32? value)
//             : base(NodeType.Parameter)
//         {
//             Identity = name;
//             Value = value;
//         }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }


//        public override object Clone()
//        {
//            return this;
//        }
//    }
//    public partial class SqlInt64Parameter : SqlInt64Base, IParameterNode
//    {
//        public SqlInt64Parameter(Int64? value) : this("p", value) { }
//        public SqlInt64Parameter(string name, Int64? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlInt64Parameter(string name, Int64? value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlInt64Parameter(NameIdentity name, Int64? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }
        
//        public override object Clone()
//        {
//            return this;
//        }
//    }

//    public partial class SqlDoubleParameter : SqlDoubleBase, IParameterNode
//    {
//        public SqlDoubleParameter(Double? value) : this("p", value) { }
//        public SqlDoubleParameter(string name, Double? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlDoubleParameter(string name, Double? value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlDoubleParameter(NameIdentity name, Double? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }

//        public override object Clone()
//        {
//            return this;
//        }
//    }
//    public partial class SqlDecimalParameter : SqlDecimalBase, IParameterNode
//    {
//        public SqlDecimalParameter(Decimal? value) : this("p", value) { }
//        public SqlDecimalParameter(string name, Decimal? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlDecimalParameter(string name, Decimal? value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlDecimalParameter(NameIdentity name, Decimal? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }

//        public override object Clone()
//        {
//            return this;
//        }
//    }

//    public partial class SqlSingleParameter : SqlSingleBase, IParameterNode
//    {
//        public SqlSingleParameter(Single? value) : this("p", value) { }
//        public SqlSingleParameter(string name, Single? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlSingleParameter(string name, Single? value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlSingleParameter(NameIdentity name, Single? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }

//        public ParameterDirection Direction { get; set; }

//        public override object Clone()
//        {
//            return this;
//        }
//    }

//    public partial class SqlStringParameter : SqlStringBase, IParameterNode
//    {
//        public SqlStringParameter(string value) : this("p", value, 254) { }
//        public SqlStringParameter(string value, int length) : this("p", value,length) { }
//        public SqlStringParameter(string name, string value,int length, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(SqlType.GetString(length), name, direction);
//            Value = value;
//        }
//        public SqlStringParameter(string name, string value, int length)
//            : this(name, value, length,ParameterDirection.Input)
//        {
//        }
//        public SqlStringParameter(string name, string value)
//            : this(name, value, 254, ParameterDirection.Input)
//        {
//        }
//        public SqlStringParameter(NameIdentity identity, string value)
//            : base(NodeType.Parameter)
//        {
//            Identity = identity;
//            Value = value;
//        }
//        protected SqlStringParameter() : base(NodeType.Parameter) { }
//        public NameIdentity Identity { get; protected set; }
//        public object Value { get; protected set; }

//        public static readonly SqlStringParameter Empty = new SqlStringParameter("");

//        public override object Clone()
//        {
//            return this;
//        }
//    }
//    public partial class SqlAnsiStringParameter : SqlAnsiStringBase, IParameterNode
//    {
//        public SqlAnsiStringParameter(string value) : this("p", value, DbConfig.DefaultLength) { }
//        public SqlAnsiStringParameter(string value, int length) : this("p", value,length) { }
//        public SqlAnsiStringParameter(string name, string value, int length, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(SqlType.GetAnsiString(length), name, direction);
            
//        }
//        public SqlAnsiStringParameter(string name, string value)
//            : this(name, value, 254, ParameterDirection.Input)
//        {
//        }
//        public SqlAnsiStringParameter(NameIdentity identity, string value)
//            : base(NodeType.Parameter)
//        {
//            Identity = identity;
//            Value = value;
//        }
//        public SqlAnsiStringParameter(string name, string value, int length)
//            : this(name, value, length,ParameterDirection.Input)
//        {
//        }

//        public NameIdentity Identity { get; protected set; }
//        public object Value { get; protected set; }

//        public new static readonly SqlAnsiStringParameter Empty = new SqlAnsiStringParameter("",0);

//        public override object Clone()
//        {
//            return this;
//        }
//    }
//    public partial class SqlClobParameter : SqlClobBase, IParameterNode
//    {
//        public SqlClobParameter(string value) : this("p", value, DbConfig.DefaultLength) { }
//        public SqlClobParameter(string value, int length) : this("p", value, length) { }
//        public SqlClobParameter(string name, string value, int length, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(SqlType.Clob, name, direction);

//        }
//        public SqlClobParameter(string name, string value)
//            : this(name, value, 254, ParameterDirection.Input)
//        {
//        }
//        public SqlClobParameter(NameIdentity identity, string value)
//            : base(NodeType.Parameter)
//        {
//            Identity = identity;
//            Value = value;
//        }
//        public SqlClobParameter(string name, string value, int length)
//            : this(name, value, length, ParameterDirection.Input)
//        {
//        }

//        public NameIdentity Identity { get; protected set; }
//        public object Value { get; protected set; }

//        public new static readonly SqlClobParameter Empty = new SqlClobParameter("");

//        public override object Clone()
//        {
//            return this;
//        }
//    }
//    public partial class SqlNClobParameter : SqlNClobBase, IParameterNode
//    {
//        public SqlNClobParameter(string value) : this("p", value, DbConfig.DefaultLength) { }
//        public SqlNClobParameter(string value, int length) : this("p", value, length) { }
//        public SqlNClobParameter(string name, string value, int length, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(SqlType.NClob, name, direction);

//        }
//        public SqlNClobParameter(string name, string value)
//            : this(name, value, 254, ParameterDirection.Input)
//        {
//        }
//        public SqlNClobParameter(NameIdentity identity, string value)
//            : base(NodeType.Parameter)
//        {
//            Identity = identity;
//            Value = value;
//        }
//        public SqlNClobParameter(string name, string value, int length)
//            : this(name, value, length, ParameterDirection.Input)
//        {
//        }

//        public NameIdentity Identity { get; protected set; }
//        public object Value { get; protected set; }

//        public new static readonly SqlNClobParameter Empty = new SqlNClobParameter("");

//        public override object Clone()
//        {
//            return this;
//        }
//    }

//    public partial class SqlGuidParameter : SqlGuidBase, IParameterNode
//    {
//        public SqlGuidParameter(Guid? value) : this("p", value) { }
//        public SqlGuidParameter(string name, Guid? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlGuidParameter(string name, Guid? value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlGuidParameter(NameIdentity name, Guid? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }

//        public override object Clone()
//        {
//            return this;
//        }
//    }

//    public partial class SqlDateTimeParameter : SqlDateTimeBase, IParameterNode
//    {
//        public SqlDateTimeParameter(DateTime? value) : this("p", value) { }
//        public SqlDateTimeParameter(string name, DateTime? value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlDateTimeParameter(string name, DateTime? value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlDateTimeParameter(NameIdentity name, DateTime? value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }
//    }

//    public partial class SqlBinaryParameter : SqlBinaryBase, IParameterNode
//    {
//        public SqlBinaryParameter(byte[] value) : this("p", value) { }
//        public SqlBinaryParameter(string name, byte[] value, ParameterDirection direction)
//            : base(NodeType.Parameter)
//        {
//            Identity = NameIdentity.Get(Type, name, direction);
//            Value = value;
//        }
//        public SqlBinaryParameter(string name, byte[] value)
//             : this(name, value, ParameterDirection.Input)
//        {
//        }
//        public SqlBinaryParameter(NameIdentity name, byte[] value)
//            : base(NodeType.Parameter)
//        {
//            Identity = name;
//            Value = value;
//        }
//        public NameIdentity Identity { get; private set; }
//        public object Value { get; private set; }

//        public override object Clone()
//        {
//            return this;
//        }
//    }
//}
